package com.zpself.module.算法练习.二叉树;

import java.util.ArrayList;
import java.util.List;

/**
 * @author By ZengPeng
 * @Description 给定一个无重复元素的有序整数数组 nums 。
 *      返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说，nums 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个范围但不属于 nums 的数字 x 。
 *      列表中的每个区间范围 [a,b] 应该按如下格式输出：
 *      "a->b" ，如果 a != b
 *      "a" ，如果 a == b
 * @date in  2021/1/20 19:13
 * @Modified By
 */
public class 力扣_228_汇总区间 {
    public static void main(String[] args) {

        System.out.println(myAnswer(new int []{0,2,3,4,6,8,9}));
        System.out.println(other(new int []{0,2,3,4,6,8,9}));
    }

    public static List<String> myAnswer(int[] nums){

        ArrayList<String> arrayList = new ArrayList<>();
        int min = 0;
        for (int i = 0 ; i < nums.length; i++) {
           if( i==nums.length-1 || nums[i]+1 != nums[i+1]  ){//i==nums.length-1  最后一个值得进去判断
               if(min==i )
                   arrayList.add(nums[min]+"");
               else
                   arrayList.add(nums[min]+"->" +nums[i]);
               min =i+1;
           }
        }
        return arrayList;
    }

    public static List<String> other(int[] nums){
        List<String> target = new ArrayList<>();
        if(nums.length == 0) return target;
        StringBuilder sb = new StringBuilder();
        for (int i = 0 ,j = i + 1;j < nums.length; i++,j++) {
            if(nums[j] - 1 > nums[i]) {
                sb.append(nums[i]);
                target.add(sb.toString());
                sb = new StringBuilder();
            }else {
                if(sb.length() == 0) {
                    sb.append(nums[i]);
                    sb.append("->");
                }
            }
        }
        target.add(sb.append(nums[nums.length - 1]).toString());
        return target;
    }
}
